package jf.jextn.xml;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import javax.xml.namespace.NamespaceContext;

public class SimpleNamespaceContext implements NamespaceContext {

    private Map<String, String> prefixNamespaceURI = new HashMap<String, String>();

    private Map<String, String> namespaceURIPrefix = new HashMap<String, String>();

    public String getNamespaceURI(String prefix) {
        return prefixNamespaceURI.get(prefix);
    }

    public String getPrefix(String namespaceURI) {
        return namespaceURIPrefix.get(namespaceURI);
    }

    public void addMapping(String prefix, String uri) {
        prefixNamespaceURI.put(prefix, uri);
        namespaceURIPrefix.put(uri, prefix);
    }

    public Iterator<?> getPrefixes(String namespaceURI) {
        Set<String> set = new TreeSet<String>();

        for (Map.Entry<String, String> e : prefixNamespaceURI.entrySet()) {
            String key = e.getKey();
            String value = e.getValue();
            if (namespaceURI.equals(value)) {
                set.add(key);
            }
        }

        return Collections.unmodifiableCollection(set).iterator();
    }

}
